﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>



struct book
{
	char name[20];
	int age;
	char  sex[5];

};

struct Stu
{
	char name[20];
	int age;
};

void pf (struct book* b)
{
	printf("%s  %d   %s\n", b->name, b->age, b->sex);
}

union Un1
{
	char c[5];
	int i;
};
union Un2
{
	short c[7];
	int i;
};

//int main()
//{
//	//struct book b = {"1111",5, "nan"};
//	//pf(&b);
//
//	//printf("%s     %s\n", *(&b)->name , *(&b)->sex);
//
//	//struct Stu s = { "zhangsan", 20 };
//	//printf("name = %s  age = %d\n", s.name, s.age);
//
//
//	printf("%d\n", sizeof(union Un1));
//	printf("%d\n", sizeof(union Un2));
//
//	return 0;
//}


//#pragma pack(4)/*编译选项，表示4字节对齐 平台：VS2013。语言：C语言*/
////假设long 是4个字节
//int main(int argc, char* argv[])
//{
//    struct tagTest1
//    {
//        short a;
//        char d;
//        long b;
//        long c;
//    };
//    struct tagTest2
//    {
//        long b;
//        short c;
//        char d;
//        long a;
//    };
//    struct tagTest3
//    {
//        short c;
//        long b;
//        char d;
//        long a;
//    };
//    struct tagTest1 stT1;
//    struct tagTest2 stT2;
//    struct tagTest3 stT3;
//
//    printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
//    return 0;
//}

struct _Record_Struct
{
	unsigned char Env_Alarm_ID : 4;
	unsigned char Para1 : 2;
	unsigned char state;
	unsigned char avail : 1;
}*Env_Alarm_Record;

//int main()
//{
//
//	enum ENUM_A
//	{
//		X1,
//		Y1,
//		Z1 = 255,
//		A1,
//		B1,
//	};
//	enum ENUM_A enumA = Y1;
//	enum ENUM_A enumB = B1;
//	//printf("%d %d %d\n",X1, enumA, enumB);
//
//	struct A
//	{
//		int a;
//		short b;
//		int c;
//		char d;
//	};
//	struct B
//	{
//		int a;
//		short b;
//		char c;
//		int d;
//	};
//	printf("%d %d\n", sizeof(struct A), sizeof(struct B));
//	//printf("%d\n",sizeof(struct _Record_Struct));
//	return 0;
//}



//int main()
//{
//	unsigned char puc[4];
//	struct tagPIM
//	{
//		unsigned char ucPim1;
//		unsigned char ucData0 : 1;
//		unsigned char ucData1 : 2;
//		unsigned char ucData2 : 3;
//	}*pstPimData;
//	pstPimData = (struct tagPIM*)puc;
//	memset(puc, 0, 4);//初始化
//	pstPimData->ucPim1 = 2;
//	pstPimData->ucData0 = 3;
//	pstPimData->ucData1 = 4;
//	pstPimData->ucData2 = 5;
//	printf("%02x %02x %02x %02x\n", puc[0], puc[1], puc[2], puc[3]);
//	return 0;
//}



#include <stdio.h>
#include <string.h>

//int main()
//{
//	char str[] = "almost every programmer should know memset!";
//	memset(str, '-', 6);
//	puts(str);
//	return 0;
//}


struct S1
{
	char c1;//1
	int i;//4
	char c2;//1
};

struct S2
{
	char c1;//1
	char c2;//1
	int i;//4
};

int main()
{
	struct S1 s;
	struct S2 s2;
	printf("%d\n", sizeof( s));
	printf("%d\n", sizeof( s2));

}